<div class="page">
    <h1>字典项公用方法 OptionSide</h1>
    <div class="line"></div>

    <h2>初始化</h2>
    <br>
    <p>mian 方法中，需要初始化OptionSide的获取方式</p>
    <br>
    <p>由于各个项目获取字典项的参数值及方法不一致，需要在项目进行初始化时单独处理字典项获取方法</p>
    <p>如果需要在表格中使用optionSide，请将数据格式化为 { label ：'字典名称'， value ： '字典值' } 的形式</p>
    <p>需要后台提升调用字典项的 接口返回速度，以提升体验</p>
    <br>
    <p></p>
    <pre class="line-numbers"><code class="language-js"> // mian.js 文件中
icu.optionSide.setOptionSideEvent(function(code,callback){
    // code 为获取字典项的关键字
    // callback 为获取关键字之后的回调事件
    // 注意: 此处的ajax 需要以同步方式与运行
    $.ajax({
        type: 'get',
        url : config.InsterfaceAddress + '/dist?code=' + code,
        success : function (res){
            var _data = [];
            for (var i; i < res.data.length; i++ ){
                var item = res.data[i];
                _data.push({
                    label : item.name,
                    value :  item.id,
                })
            };
            callback(_data);
        }
    })
})</code></pre>
    <br>
    <div class="line"></div>
    <h2>取值</h2>
    <br>

    <h4>示例 : 1 获取单个数据字典</h4>
    <pre class="line-numbers"><code class="language-js">var test = icu.optionSide.get('test');
// test = [
//    { label: 'A', value: 'a', },
//    { label: 'B', value: 'b', },
//    { label: 'C', value: 'c', }
// ]
</code></pre>
    <h4>示例 ： 2 以对象类型获取数据字典</h4>
    <pre class="line-numbers"><code class="language-js">// 默认格式化 Key 值为 value
var test = icu.optionSide.get('test','object');
// test = { 
//     "a": { "label": "A", "value": "a" }, 
//     "b": { "label": "B", "value": "b" },
//     "c": { "label": "C", "value": "c" }
// }
</code></pre>
    <h4>示例 ：3 以自定义key值获取对象类型数据字典</h4>
    <pre class="line-numbers"><code class="language-js">var test = icu.optionSide.get('test','object','label');
// test = { 
//     "A": { "label": "A", "value": "a" }, 
//     "B": { "label": "B", "value": "b" }, 
//     "C": { "label": "C", "value": "c" } 
// }
</code></pre>
    <h4>示例 : 4 获取多个数据字典</h4>
    <pre class="line-numbers"><code class="language-js">var test = icu.optionSide.get(['test','Gender']);
// var test = {
//     test: [
//         { label: 'A', value: 'a', },
//         { label: 'B', value: 'b', },
//         { label: 'C', value: 'c', }
//     ],
//     Gender: [
//         { label: '男', value: '0', },
//         { label: '女', value: '1', },
//         { label: '未知', value: '2', }
//     ],
// }
</code></pre>
    <h4>示例 : 5 根据类型获取多个数据字典</h4>
    <pre class="line-numbers"><code class="language-js">var test = icu.optionSide.get(['test','Gender'],'object');
// test = {
//     test: {
//         "a": { "label": "A", "value": "a" },
//         "b": { "label": "B", "value": "b" },
//         "c": { "label": "C", "value": "c" }
//     },
//     Gender: {
//         "0": { "label": "男", "value": "0" },
//         "1": { "label": "女", "value": "1" },
//         "2": { "label": "未知", "value": "2" }
//     },
// }
</code></pre>
    <h4>示例 ：6 根据自定义关键字，获取多个对象类型数据字典</h4>
    <pre class="line-numbers"><code class="language-js">var test = icu.optionSide.get(['test','Gender'],'object','value');
// 自己试把。。懒得写了</code></pre>
    <div class="line"></div>
    <h2>手动为字典项赋值</h2>
    <br>
    <p>部分项目中，存在自定义字典项，或者未存储在后台的静态字典，需要通过该方法在初始化时，进行字典项配置</p>
    <p>该字典项不能调用 刷新方法重新获取，否则会报错</p>
    <pre class="line-numbers"><code class="language-js">icu.optionSide.set([data],[key]);
    // data 参数为字典项实际数组
    // key 参数为字符串, 作为字典项的调用名称
    </code></pre>

    <h4>示例 : 1 赋值</h4>

    <pre class="line-numbers"><code class="language-js">// 赋值
icu.optionSide.set([
    {label : "名称1"，value : "value1"},
    {label : "名称2"，value : "value2"}
],'testSet');
// 取值
var testSet = icu.optionSide.get('testSet');
// testSet = [
//     {label : "名称1"，value : "value1"},
//     {label : "名称2"，value : "value2"}
// ]</code></pre>
    <br>
    <div class="line"></div>
    <h2>刷新字典项</h2>
    <br>

    <p>注：一般情况下，字典项只取值一次，在页面未刷新期间不再重复调用AJAX获取字典项</p>
    <p> 已经存在的字典项不会再次获取，需要手动调用字典项刷新方法</p>

    <pre class="line-numbers"><code class="language-js">// 刷新字典名称为 testSet 的字典项,并返回字典项结果
var data = icu.optionSide.refresh('testSet');
</code></pre>

</div>